package com.sxbbc.common.core.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.function.common.RestResponse;
import com.sxbbc.common.core.entity.jz.AgAgent;
import com.sxbbc.common.core.entity.jz.CCustomer;
import com.sxbbc.common.core.enums.UserFreezeEnums;
import com.sxbbc.common.core.utils.BasePage;

import java.util.List;

/**
 * <p>
 * 会员信息表 服务类
 * </p>
 *
 * @author leehao
 * @since 2019-05-05
 */
public interface ICCustomerService extends IService<CCustomer> {

    /**
     * 会员列表
     * @param page 分页条件
     * @param customer 查询条件
     * @author leehao
     * @return com.baomidou.mybatisplus.plugins.Page
     */
    Page<CCustomer> queryCustomerList(BasePage<CCustomer> page, CCustomer customer);

    /**
     * 冻结/解除冻结会员
     * @param id 会员id
     * @param status 状态 1正常0冻结
     * @author leehao
     * @return com.function.common.RestResponse
     */
    RestResponse handleCustomerStatus(Integer id, Integer status);

    /**
     * 重置会员密码
     * @param id 会员id
     * @param type 操作类型
     *             1 = 交易密码
     *             2 = 登录密码
     * @author leehao
     * @return com.function.common.RestResponse
     */
    RestResponse handleCustomerPassword(Integer id, Integer type);

    /**
     * 查询用户
     * @param customer 传入各自查询条件
     * @author leehao
     * @return com.sxbbc.common.core.entity.jz.CCustomer
     */
    CCustomer getCustomer(CCustomer customer);
	
	/**
	 * 修改用户登录密码
	 * @param cid
	 * @param password
	 * @return
	 */
	RestResponse updateCustomerPassword(Integer cid,String password);
	
	/**
	 * 修改用户支付密码
	 * @param cid
	 * @param payword
	 * @return
	 */
	RestResponse updateCustomerPayword(Integer cid,String payword);
	
	/**
	 * 设置用户邮箱
	 * @param cid
	 * @param email
	 * @return
	 */
	RestResponse updateCustomerEmail(Integer cid,String email);
	
	/**
	 * 设置用户手机号
	 * @param cid
	 * @param phone
	 * @return
	 */
	RestResponse updateCustomerPhone(Integer cid,String phone);


	/**
	 * 
	 *根据邀请码获取
	 * @param inviteCode
	 * @return
	 * @author Wahyee
	 */
	CCustomer getByInviteCode(String inviteCode);
	
	/** 
	 * 检查冻结用户操作结果
	 * @param type {@link UserFreezeEnums}
	 * @param payType 订单支付时必填
	 * @return
	 * @author Wahyee
	 */
	String checkFrezeeCustomer(Integer type,Integer payType);
	
	/**
	 * 
	 * 检查冻结用户操作结果
	 * @param status 用户状态
	 * @param type {@link UserFreezeEnums}
	 * @param payType 订单支付时必填
	 * @author Wahyee
	 */
	String checkFrezeeCustomer(Integer status,Integer type,Integer payType);
	
	/**
	 * 
	 * 获取我的推荐人信息
	 * @param id 被推荐人的ID
	 * @return
	 * @author Wahyee
	 */
	CCustomer getMineParent(Integer id);

	/***
	 * 找用户关系链中最近的一个某个等级会员
	 * @param levelId 会员等级ID
	 * @param ids)
	 * @return
	 */
    CCustomer selectNearPeople( int levelId,  List<Integer> ids);

	/***
	 * 查询代理下的有效会员数
	 * @param agAgent
	 */
	int selectEffectiveCustomerNum(AgAgent agAgent);

	/***
	 * 查看会员团队
	 * @param customer
	 * @return
	 */
	List<CCustomer> queryTeam(CCustomer customer);
}
